모의해킹

피버팅과터널링_13_Ligolo-ng 터널링

작성자 : Heehyeon Yoo|2025-12-20
# 모의해킹# PNT# Ligolo-ng# TUN# Gvisor

1. 개요

Ligolo-ng는 차세대(Next-Gen) 터널링 도구로, 기존의 SOCKS 프록시 기반 도구(Chisel, SSH Dynamic Forwarding 등)와는 근본적으로 다른 아키텍처를 가진다.

리눅스의 TUN 인터페이스Gvisor(Go 언어 기반의 사용자 공간 네트워크 스택) 기술을 활용하여, 공격자 시스템에 가상 네트워크 인터페이스를 생성하고 타겟 네트워크와 직접 연결된 듯한 환경을 제공한다. 사실상 VPN(Virtual Private Network)과 동일하게 동작한다.

2. 기술적 특징 및 장점

2.1 SOCKS vs TUN

  • SOCKS 방식 (기존): ProxyChains와 같은 래퍼(Wrapper)가 필요하며, TCP 연결(Connect Scan)만 지원한다. SYN 스캔이나 ICMP 패킷 전송이 불가능하며, 멀티홉 구성 시 성능 저하가 심하다.
  • TUN 방식 (Ligolo-ng): 공격자 PC에 실제 네트워크 인터페이스(ligolo0 등)가 생성된다. 커널 레벨에서 패킷을 라우팅하므로 ProxyChains 없이도 모든 도구(nmap -sS, fping 등)를 투명하게 사용할 수 있다.

2.2 성능

Gvisor를 이용한 사용자 공간(Userland) 네트워크 스택 처리 덕분에, 오버헤드가 매우 적고 전송 속도가 빠르다(100~200Mbps 수준).

3. 구성 요소 및 아키텍처

Ligolo-ng는 Proxy(Server)Agent(Client)로 구성된다.

  • Proxy (Attacker): 공격자 머신에서 실행되며, TUN 인터페이스를 생성하고 들어오는 연결을 받아 타겟 네트워크로 라우팅한다.
  • Agent (Pivot Host): 피벗 호스트에서 실행되며, 공격자의 Proxy에 연결(Reverse Connection)하여 네트워크 트래픽을 중계한다.

4. 사용 방법

4.1 Proxy (공격자)

  1. TUN 인터페이스 생성 및 실행:

    # TUN 인터페이스 생성을 위한 sudo 권한 필요
    sudo ./proxy -selfcert
    
    • -selfcert: 자체 서명된 TLS 인증서를 사용하여 트래픽을 암호화한다.
  2. Ligolo 인터페이스 확인:
    ip addr 명령어로 ligolo 또는 utun 인터페이스가 생성되었는지 확인한다.

4.2 Agent (피벗 호스트)

# 공격자(10.8.0.2)의 11601 포트(기본값)로 역방향 연결
./agent -connect 10.8.0.2:11601 -ignore-cert

4.3 라우팅 설정 (중요)

연결이 수립된 후, 공격자 Proxy 콘솔(Ligolo Shell)에서 에이전트 세션을 선택하고 타겟 네트워크로의 라우팅을 설정해야 한다.

  1. 세션 선택: session 명령어로 연결된 에이전트 선택.
  2. 네트워크 확인: ifconfig 명령어로 피벗 호스트의 내부망 대역 확인(예: 10.1.20.0/24).
  3. OS 라우팅 추가:
    공격자 로컬 터미널(Ligolo 쉘 아님)에서 해당 대역으로 가는 트래픽을 Ligolo 인터페이스로 보내도록 라우팅 테이블을 수정한다.
    # 공격자 PC에서 실행
    sudo ip route add 10.1.20.0/24 dev ligolo0
    
  4. 터널 시작: Ligolo 쉘에서 start 명령어로 터널링 활성화.

이제 별도의 도구 없이 ping 10.1.20.20이나 nmap -sS 10.1.20.20이 가능하다.

5. OpsSec 고려사항

  • 가장 강력한 기능이자 위험 요소: 네트워크 인터페이스 레벨의 터널링은 공격자가 타겟 네트워크의 완전한 일부가 되게 해준다. 하지만 대량의 트래픽이나 비정상적인 프로토콜(ICMP 등) 사용 시 NIDS 탐지 확률도 높아진다.
  • 더블 피버팅(Double Pivoting): Ligolo-ng는 리스너 기능을 통해 에이전트 간의 연결(체인)을 쉽게 구성할 수 있어, 다중구간 피버팅 시 관리 복잡도를 크게 낮춰준다.